package com.chuangsi.project.admin.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.chuangsi.project.admin.domain.PayOrder;
import com.chuangsi.project.admin.dto.admin.index.*;
import com.chuangsi.project.admin.dto.app.index.*;
import com.chuangsi.project.admin.dto.app.order.ResPayOrderNotFinishDto;
import com.chuangsi.project.admin.dto.app.payorder.OfflinePayOrderDto;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 订单表 服务类
 * </p>
 *
 * @author ywb
 * @since 2025-02-25
 */
public interface IIndexService {

    /**
     * 获取总销售额
     * @return
     */
    TotalSalesDto getTotalSales();

    /**
     * 获取总销售额-PC
     * @return
     */
    BigDecimal getTotalSalesAmountForPc(ReqIndexDto req);

    /**
     * 获取今日销售金额
     * @return
     */
    DaySalesAmountDto getDaySalesAmount();

    /**
     * 获取本周/上周的销售额折线图
     * @return
     */
    List<WeekSalesAmountDto> getWeeKSalesAmount();

    /**
     * 获取当月/上月销售金额
     * @return
     */
    MonthSalesAmountDto getMonthSalesAmount();

    /**
     * 获取本月销售产品占比（饼图）
     * @return
     */
    List<MonthSalesProductPieChartDto> getMonthSalesProductPieChart();

    /**
     * 获取本月销售企业占比（饼图）
     * @return
     */
    List<MonthSalesSealPieChartDto> getMonthSalesSealPieChart();


    /**
     * 获取本月计划完成情况
     * @return
     */
    MonthSalesPlanPieChartDto getMonthSalesPlanPieChart();

    /**
     * 获取总销售数
     * @param req
     * @return
     */
    BigDecimal getTotalSalesNumForPc(ReqIndexDto req);

    /**
     * 获取部门销售排行
     * @param req
     * @return
     */
    List<ResDeptRankDto> getDeptSalesRankForPc(ReqIndexDto req);

    /**
     * 获取本年内销售额折线图--PC
     * @param req
     * @return
     */
    List<MonthSalesAmountLineChartDto> getMonthSalesAmountLineChartForPc(ReqIndexDto req);

    /**
     * 当日销售额分析
     * @return
     */
    DaySalesDto getDaySalesForPc(ReqIndexDto req);

    /**
     * 当月销售额分析
     * @param req
     * @return
     */
    MonthSalesDto getMonthSalesForPc(ReqIndexDto req);

    /**
     * 所有门店当月目标单数及销售金额达成率
     * @param req
     * @return
     */
    DeptSalesAchievementRateDto getDeptSalesAchievementRate(ReqIndexDto req);

    /**
     * 获取开单比例
     * @param req
     * @return
     */
    BillingRateDto getBillingRate(ReqIndexDto req);
}
